Добавил:
Education Must Be Free Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторные работы / LR_6_Obrabotka_massivov.docx
Скачиваний:
12
Добавлен:
22.09.2021
Размер:
218.7 Кб
Скачать
    1. Многомерные массивы

Размерностью массива называется количество его индексов. Например, массив размерностью два – двумерный массив – соответствует математическому понятию прямоугольной матрицы.

При описании многомерного массива размерность задается квадратными скобками, в которых указывается количество допустимых значений каждого индекса.

Примеры описания многомерных массивов.

int mas[3][4];

//описание целочисленного двумерного массива

//из 3-х строк и 4-х столбцов

const int N = 5;

double A[2*N][2*N];

//описание двумерного вещественного массива

//A размером 10×10 элементов

int B[2][4][2];

//описание трехмерного целочисленного

//массива B

Стандарт языка С++ не накладывает ограничения на размерность массива, но каждый компилятор задает максимальное количество индексов массива. На практике обычно используются массивы размерностью не более трех.

Для доступа к элементу многомерного массива после имени в квадратных скобках указываются все его индексы. Например, mas[i][j] или A[0][0]. Для инициализации многомерного массива каждый элемент-массив заключается в свои фигурные скобки, либо задается общий список элементов в том порядке, в котором элементы располагаются в памяти.

Например,

int mas[3][4] = { {0, -1, 2, -7}, {9, 7, 5, 8}, {3, 0, 1, -6} };

или

int mas[3][4] = {0, -1, 2, -7, 9, 7, 5, 8, 3, 0, 1, -6};

Элементы многомерного массива размещаются в оперативной памяти в последовательных ячейках построчно. Поэтому многомерные массивы быстрее просматриваются по строкам, а не по столбцам. Для просмотра используются вложенные циклы. Быстрый просмотр массива будет обеспечен, если первый индекс будет изменяться во внешнем цикле, а последний индекс – во внутреннем цикле. Рассмотрим работу с двумерными массивами на следующих примерах.

Пример 1. Ввод и вывод элементов двумерного массива

const int kolStr = 3, kolStb = 4;

int i, j, mas[kolStr][kolStb] = {0};

//ввод элементов массива

for (i = 0; i < kolStr; i++)

{

for (j = 0; j < kolStb; j++)

{

cout << "mas[" << i << "][" << j << "] = ";

cin >> mas[i][j];

}

cout << "----------\n";

}

//вывод элементов массива

for (i = 0; i < kolStr; i++)

{

for (j = 0; j < kolStb; j++)

cout << mas[i][j] << '\t';

cout << '\n';

}

Пример 2. Вычисление суммы всех элементов матрицы

sum = 0;

for (i = 0; i < kolStr; i++)

for (j = 0; j < kolStb; j++)

sum += mas[i][j];

Пример 3. Поиск максимального элемента матрицы

max = mas[0][0];

for (i = 0; i < kolStr; i++)

for (j = 0; j < kolStb; j++)

if (mas[i][j] > max)

max = mas[i][j];

Пример 4. Дан двумерный массив mas. Составить вектор b такой, что а) bi – максимальный элемент i-й строки

for (i = 0; i < kolStr; i++)

{

max = mas[i][0];

for (j = 0; j < kolStb; j++)

if (mas[i][j] > max)

max = mas[i][j];

b[i] = max;

}

б) bi – среднее арифметическое отрицательных элементов текущей строки

double s;

int k;

for (i = 0; i < kolStr; i++)

{

k = 0; s = 0;

for (j = 0; j < kolStb; j++)

if (mas[i][j] < 0)

{

s +=mas[i][j];

k++;

}

b[i] = s/k;

}

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.

  1. Ознакомится с теоретической частью лабораторной работы.

  2. Выполнить задание по работе с одномерными массивами в соответствии с вариантом.

  3. Выполнить задание по работе с многомерными массивами в соответствии с вариантом.

  4. Сделать выводы о полученных результатах работы программ.

СОДЕРЖАНИЕ ОТЧЕТА

    1. Титульный лист с названием лабораторной работы, номером своего варианта, фамилией студента(ов) и группы.

    2. На первом после титульного листа указать :

- Название работы.

- Цель.

- Задание по варианту.

    1. Текст программы.

    2. Результаты работы программы.

    3. Выводы о полученных результатах работы программы.

КОНТРОЛЬНЫЕ ВОПРОСЫ

    1. Что такое массив данных?

    2. Какие виды массивов вы знаете?

    3. Как массивы представляются в оперативной памяти?

    4. Способы инициализации одномерного массива.

    5. Способы инициализации многомерного массива.

    6. Какие методы сортировки массивов вы знаете?

    7. Какие способы поиска элементов в массиве вы знаете.

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

  1. Липпман С. Б. Основы программирования на C++: Пер. с англ. — М.:Вильямс, 2002. — 256 с.

  2. Липпман С. Б., Лажойе Ж. Язык программирования С++. Вводный курс: Пер. с англ. — 3-е изд. — М.: ДМК, 2001. — 1104 с.

  3. Страуструп Б. Язык программирования C++: Пер. с англ. — 3-е спец. изд. — М.: Бином, 2003. — 1104 с.

  4. Страуструп Б. Дизайн и эволюция языка C++. Объектно-ориентированный язык программирования: Пер. с англ. — М.: ДМК пресс, Питер, 2006. — 448 с.

  5. Эккель Б. Философия C++. Введение в стандартный C++: Пер. с англ. — 2-е изд. — СПб.: Питер, 2004. — 572 с.

  6. Эккель Б., Эллисон Ч. Философия C++. Практическое программирование: Пер. с англ. — СПб.: Питер, 2004. — 608 с.

Приложение